package com.example.basicdemo.service;


import com.example.basicdemo.model.builder.*;
import com.example.basicdemo.model.result.*;

public interface PermissionService {




    /**
     * 查询组织信息树
     * @param builder
     * @return
     */
    QueryRentalInfoResult queryRentalInfo(QueryRentalInfoRequestBuilder builder);

    /**
     * 查询组织信息详情
     * @param builder
     * @return
     */
    QueryRentalInfoDetailResult queryRentalInfoDetail(QueryRentalInfoDetailRequestBuilder builder);


    /**
     * 查询下级组织列表
     * @param builder
     * @return
     */
    QueryRentalInfoChildResult queryRentalInfoChild(QueryRentalInfoChildRequestBuilder builder);


    /**
     * 获取子孙节点信息
     * @param builder
     * @return
     */
    GetRentalChildResult getRentalChild(GetRentalChildRequestBuilder builder);

    /**
     * 新增组织信息
     * @param builder
     * @return
     */
    SaveRentalInfoResult saveRentalInfo(SaveRentalInfoRequestBuilder builder);


    /**
     * 修改组织信息
     * @param builder
     * @return
     */
    UpdateRentalInfoResult updateRentalInfo(UpdateRentalInfoRequestBuilder builder);


    /**
     * 修改组织状态
     * @param builder
     * @return
     */
    SwitchRentalStatusResult switchRentalStatus(SwitchRentalStatusRequestBuilder builder);

    /**
     * 删除组织信息
     * @param builder
     * @return
     */
    DeleteRentalInfoResult deleteRentalInfo(DeleteRentalInfoRequestBuilder builder);


    /**
     * 查询园区信息列表
     * @param builder
     * @return
     */
    QueryParkInfoResult queryParkInfo(QueryParkInfoRequestBuilder builder);


    /**
     * 查询组织类型列表
     * @param builder
     * @return
     */
    QueryRentalTypeResult queryRentalType(QueryRentalTypeRequestBuilder builder);

    /**
     * 添加组织类型
     * @param builder
     * @return
     */
    AddRentalTypeResult addRentalType(AddRentalTypeRequestBuilder builder);


    /**
     * 修改组织类型
     * @param builder
     * @return
     */
    UpdateRentalTypeResult updateRentalType(UpdateRentalTypeReqeustBuilder builder);


    /**
     * 删除组织类型
     * @param builder
     * @return
     */
    DeleteRentalTypeResult deleteRentalType(DeleteRentalTypeRequestBuilder builder);


    /**
     * 查询用户功能权限列表
     * @param builder
     * @return
     */
    QueryUserAclResult queryUserAcl(QueryUserAclRequestBuilder builder);

    /**
     * 分页查询用户
     * @param builder
     * @return
     */
    PageUserResult pageUser(PageUserRequestBuilder builder);

    /**
     * 查询所有数据权限角色
     * @param builder
     * @return
     */
    ListDataAuthRoleResult listDataAuthRole(ListDataAuthRoleRequestBuilder builder);

    /**
     * 查询所有功能角色
     */
    ListRoleAclResult listRoleAcl(ListRoleAclRequestBuilder builder);

    /**
     * 操作系统桌面单点登录
     * @param builder
     * @return
     */
    OsLoginResult osLogin(OsLoginRequestBuilder builder);

    /**
     * 操作系统桌面用户登录状态
     * @param builder
     * @return
     */
    OsLoginStatusResult osLoginStatus(OsLoginStatusRequestBuilder builder);

    /**
     * 操作系统桌面用户登出
     * @param builder
     * @return
     */
    OsLogoutResult osLogout(OsLogoutRequestBuilder builder);

    /**
     * 分页查询数据角色
     * @param builder
     * @return
     */
    PageDataAuthResult pageDataAuth(PageDataAuthRequestBuilder builder);

    /**
     * 根据ID查询数据角色
     * @param builder
     * @return
     */
    QueryDataAuthByIdResult queryDataAuthById(QueryDataAuthByIdRequestBuilder builder);

    /**
     * 查询数据权限模块
     * @param builder
     * @return
     */
    QueryDataAuthModuleResult queryDataAuthModule(QueryDataAuthModuleRequestBuilder builder);

    /**
     * 根据角色id、应用标识查询权限
     * @param builder
     * @return
     */
    QueryRoleAclByIdResult queryRoleAclById(QueryRoleAclByIdRequestBuilder builder);

    /**
     * 查询角色权限列表分页
     * @param builder
     * @return
     */
    QueryRoleAclResult queryRoleAcl(QueryRoleAclRequestBuilder builder);

    /**
     * 根据ID查询用户信息
     * @param builder
     * @return
     */
    QueryUserByIdResult queryUserById(QueryUserByIdRequestBuilder builder);

    /**
     * 根据手机号重置用户密码
     * @param builder
     * @return
     */
    ResetPasswordResult resetPassword(ResetPasswordRequestBuilder builder);

    /**
     * 新增数据角色
     * @param builder
     * @return
     */
    SaveDataAuthResult saveDataAuth(SaveDataAuthRequestBuilder builder);

    /**
     * 新增功能角色
     * @param builder
     * @return
     */
    SaveRoleAclResult saveRoleAcl(SaveRoleAclRequestBuilder builder);

    /**
     * 新增用户
     * @param builder
     * @return
     */
    SaveUserResult saveUser(SaveUserRequestBuilder builder);

    /**
     * 更新数据角色
     * @param builder
     * @return
     */
    UpdateDataAuthResult updateDataAuth(UpdateDataAuthRequestBuilder builder);

    /**
     * 更新功能角色
     * @param builder
     * @return
     */
    UpdateRoleAclResult updateRoleAcl(UpdateRoleAclRequestBuilder builder);

    /**
     * 修改当前登录用户密码
     * @param builder
     * @return
     */
    UpdateUserPasswordResult updateUserPassword(UpdateUserPasswordRequestBuilder builder);

    /**
     * 更新用户信息
     * @param builder
     * @return
     */
    UpdateUserResult updateUser(UpdateUserRequestBuilder builder);


    /**
     * 获取所有学历信息
     * @param builder
     * @return
     */
    GetAllDegreeResult getAllDegree(GetAllDegreeRequestBuilder builder);


    /**
     * 获取所有公司信息
     * @param builder
     * @return
     */
    GetAllLdapDeptResult getAllLdapDept(GetAllLdapDeptRequestBuilder builder);

    /**
     * 设置网关服务地址
     *
     * @param serverHost
     * @return
     */
    PermissionService setServerHost(String serverHost);


}
